package dto

import ()

// RegisterUserResp 注册用户响应
// @Description 用户注册响应数据
// @Tags User
// @Produce json
type RegisterUserResp struct {
	ID    int64  `json:"id" proto:"Id"`
	Token string `json:"token" proto:"Token"`
}

// LoginUserResp 用户登录响应
// @Description 用户登录响应数据
// @Tags User
// @Produce json
type LoginUserResp struct {
	ID       int64  `json:"id" proto:"Id"`
	Name     string `json:"name" proto:"Name"`
	Email    string `json:"email" proto:"Email"`
	Phone    int64  `json:"phone" proto:"Phone"`
	Token    string `json:"token" proto:"Token"`
	AvatarID int64  `json:"avatarID" proto:"AvatarID"`
}

// UserInfoResp 用户信息响应
// @Description 用户详细信息响应数据
// @Tags User
// @Produce json
type UserInfoResp struct {
	ID             int64            `json:"id" proto:"Id"`
	Name           string           `json:"name" proto:"Name"`
	NickName       string           `json:"nickName" proto:"NickName"`
	Email          string           `json:"email" proto:"Email"`
	CountryCode    int64            `json:"countryCode" proto:"CountryCode"`
	Phone          int64            `json:"phone" proto:"Phone"`
	Sex            int64            `json:"sex" proto:"Sex"`
	Avatar         int64            `json:"avatar" proto:"Avatar"`
	Tags           map[string]int64 `json:"tags" proto:"Tags"`
	Status         int64            `json:"status" proto:"Status"`
	LastIP         string           `json:"lastIP" proto:"LastIP"`
	VipStatus      int64            `json:"vipStatus" proto:"VipStatus"`
	VipExpiredTime int64            `json:"vipExpiredTime" proto:"VipExpiredTime"`
	CreateTime     int64            `json:"createTime" proto:"CreateTime"`
	UpdateTime     int64            `json:"updateTime" proto:"UpdateTime"`
}

// UserListResp 用户列表响应
// @Description 用户列表响应数据
// @Tags User
// @Produce json
type UserListResp struct {
	Total int64           `json:"total" proto:"Total"`
	Page  int64           `json:"page" proto:"Page"`
	Size  int64           `json:"size" proto:"Size"`
	Users []*UserInfoResp `json:"users" proto:"Users"`
}

// ErrorResp 错误响应
// @Description 错误响应数据
// @Tags Common
// @Produce json
type ErrorResp struct {
	Code    int    `json:"code" proto:"Code"`
	Message string `json:"message" proto:"Message"`
	Details string `json:"details,omitempty" proto:"Details"`
}

// SuccessResp 成功响应
// @Description 成功响应数据
// @Tags Common
// @Produce json
type SuccessResp struct {
	Success bool   `json:"success" proto:"Success"`
	Message string `json:"message" proto:"Message"`
	Data    interface{} `json:"data,omitempty" proto:"Data"`
}
